package br.pucminas.virtual.validator.view;

import br.pucminas.virtual.validator.library.FieldValidator;
import br.pucminas.virtual.validator.library.validators.AlphaNumericValidator;
import br.pucminas.virtual.validator.library.validators.CNPJValidator;
import br.pucminas.virtual.validator.library.validators.CPFValidator;
import br.pucminas.virtual.validator.library.validators.EmailValidator;
import br.pucminas.virtual.validator.library.validators.NumericValidator;
import br.pucminas.virtual.validator.library.validators.PhoneNumberValidator;
import br.pucminas.virtual.validator.library.validators.RegexValidator;
import br.pucminas.virtual.validator.library.validators.RequiredValidator;

public enum ValidatorType {
	NotNull {

		@Override
		public FieldValidator getValidator() {
			return new RequiredValidator();
		}
	},
	Date {

		@Override
		public FieldValidator getValidator() {
			// TODO Validador de data nao implementado
			return null;
		}
	},
	Cpf {

		@Override
		public FieldValidator getValidator() {
			return new CPFValidator();
		}
	},
	Cnpj {

		@Override
		public FieldValidator getValidator() {
			return new CNPJValidator();
		}
	},
	Email {

		@Override
		public FieldValidator getValidator() {
			return new EmailValidator();
		}
	},
	IpAddress {

		@Override
		public FieldValidator getValidator() {
			// TODO Nao implementado
			return null;
		}
	
	},
	PhoneNumber {

		@Override
		public FieldValidator getValidator() {
			return new PhoneNumberValidator();
		}
	},
	Numeric{

		@Override
		public FieldValidator getValidator() {
			return new NumericValidator();
		}
		
	},AlphaNumeric{

		@Override
		public FieldValidator getValidator() {
			return new AlphaNumericValidator();
		}
		
	},Regex{

		@Override
		public FieldValidator getValidator() {
			return new RegexValidator();
		}};
	
	
	public abstract FieldValidator getValidator();
}
